package com.huey.utils.design.creation.bridge;

/**
 * 介绍类
 * @author xubo
 * @date 2022/7/27 16:02
 */
public class Remarks {

    /**
     * 桥接
     * 模式定义
     * 桥接模式即将抽象部分与它的实现部分分离开来，使他们都可以独立变化。
     *
     * 桥接模式将继承关系转化成关联关系，它降低了类与类之间的耦合度，减少了系统中类的数量，也减少了代码量。
     *
     * 将抽象部分与他的实现部分分离这句话不是很好理解，其实这并不是将抽象类与他的派生类分离，而是抽象类和它的派生类用来实现自己的对象。这样还是不能理解的话。
     * 我们就先来认清什么是抽象化，什么是实现化，什么是脱耦。
     *
     * 抽象化：其概念是将复杂物体的一个或几个特性抽出去而只注意其他特性的行动或过程。在面向对象就是将对象共同的性质抽取出去而形成类的过程。
     *
     * 实现化：针对抽象化给出的具体实现。它和抽象化是一个互逆的过程，实现化是对抽象化事物的进一步具体化。
     *
     * 脱耦：脱耦就是将抽象化和实现化之间的耦合解脱开，或者说是将它们之间的强关联改换成弱关联，将两个角色之间的继承关系改为关联关系。
     *
     * 对于那句话：将抽象部分与他的实现部分分离套用《大话设计模式》里面的就是实现系统可能有多个角度分类，每一种角度都可能变化，
     * 那么把这种多角度分类给分离出来让他们独立变化，减少他们之间耦合。
     *
     * 桥接模式中的所谓脱耦，就是指在一个软件系统的抽象化和实现化之间使用关联关系（组合或者聚合关系）而不是继承关系，从而使两者可以相对独立地变化，这就是桥接模式的用意
     */

    /**
     * 优缺点
     */



    // 需求 ---在开始学java的时候老师讲到继承的时候，总是喜欢用一个例子来讲解，那就是画图，这里有一个画笔，可以画正方形、长方形、圆形。
    // 但是现在我们需要给这些形状进行上色，这里有三种颜色：白色、灰色、黑色。这里我们可以画出3*3=9中图形：白色正方形、白色长方形、白色圆形。。。。。。
    // 到这里了我们几乎到知道了这里存在两种解决方案：
    //
    //方案一：为每种形状都提供各种颜色的版本。
    //方案二：根据实际需要对颜色和形状进行组合。

}
